package com.iluwatar;

import com.iluwatar.doubleadapter.Computer;
import com.iluwatar.doubleadapter.DisplayAdapter;
import com.iluwatar.doubleadapter.Displayer;
import com.iluwatar.doubleadapter.Keyboard;
import com.iluwatar.doubleadapter.MacBook;

import java.util.HashMap;

/**
 * 这里有两种适配器模式：类适配器实现了被适配者的接口，这个接口是对象适配器用来组合在适配器对象中的被适配者。
 * 这个例子使用的是对象适配器方法。
 * <p>
 * 适配器（Gnome工程师）把目标类（小精灵滑翔机）的接口转换成用户（Gnome工程师管理者）期望的合适的接口。
 * <p>
 * <p>
 * ——————>拥有
 * ------>是一个(实现的关系)
 * 本例子中的适配器：
 * GnomeEngineerManager———>Interface Engineer<----(Adapter)GnomeEngineer<————GoblinGlider;
 * <p>
 * 双向适配器：
 * 显示器————>VGA接口---->接口适配器<----HDMI接口<———电脑主机————>USB接口<-----USB键盘
 * <p>
 * 适配器模式解析：一台显示器是拥有一个VGA接口还是是一个VGA设备关键在于这个设备是否依赖于别的设备。
 * 比如这个显示器必须插到包含VGA接口的设备上才能用，那么表示这个显示器是一个VGA设备
 * 这个显示器不用插到VGA接口的设备上也能显示东西，只是显示的东西比较简单，那么这个显示器就是一个包含VGA输入接口的设备。
 * 包含一个接口，则必须有一个引入接口的方法
 * 是一个接口的实现类，则必须实现这个接口
 * 面向接口编程，就是组合
 */
public class App {

    public static void main(String[] args) {

//        GnomeEngineeringManager manager = new GnomeEngineeringManager();
//        manager.operateDevice();
        MacBook mac = new MacBook("白色");
        mac.input("我是一个伟大的程序员");

    }

    private static HashMap orderText(String text) {
        return null;
    }
}
